home *** CD-ROM | disk | FTP | other *** search
-
-
- MODULE PL0;
-
- FROM Terminal IMPORT Read;
-
- FROM FileSystem IMPORT Lookup, Response, Close;
-
- FROM TextWindows IMPORT Window, OpenTextWindow, Write, WriteLn,
- WriteString, CloseTextWindow;
-
- FROM Windows IMPORT WindowElements, Title;
-
- FROM PL0Scanner IMPORT InitScanner, source, CloseScanner;
-
- FROM PL0Parser IMPORT Parse, noerr, EndParser;
-
- FROM PL0Generator IMPORT InitGenerator, EndGenerator;
-
- FROM PL0Interpreter IMPORT Interpret, EndInterpreter;
-
-
- CONST
- FLength = 13;
- ESC = 33C;
- DEL = 177C;
-
-
- VAR
- ch : CHAR;
- win : Window;
- FileName : ARRAY [0..FLength] OF CHAR;
-
-
- PROCEDURE ReadName;
- VAR
- i : CARDINAL;
-
- BEGIN
- Read(ch);
- FileName := "";
- i := 0;
- WHILE (CAP(ch)>="A") AND (CAP(ch)<="Z") OR
- (ch>="0") AND (ch<="9") OR
- (ch=".") OR (ch=DEL) DO
- IF ch=DEL THEN
- IF i>3 THEN Write(win,DEL);
- DEC(i);
- END;
- ELSIF i<FLength THEN
- Write(win,ch);
- FileName[i] := ch;
- INC(i);
- END;
- Read(ch);
- END;
- IF (3<i) AND (i<FLength) AND (FileName[i-1]=".") THEN
- FileName[i] := "P"; INC(i);
- FileName[i] := "L"; INC(i);
- FileName[i] := "0"; INC(i);
- WriteString(win,"PL0");
- END;
- FileName[i] := CHAR(0);
- END ReadName;
-
-
- BEGIN
- OpenTextWindow(win,WindowElements{Title},0,320,640,80,"DIALOG");
- LOOP
- WriteString(win,"in> ");
- ReadName;
- IF ch=ESC THEN EXIT; END;
- Lookup(source,FileName,FALSE);
- IF source.res = done THEN
- InitScanner;
- InitGenerator;
- Parse;
- Close(source);
- IF noerr THEN
- WriteString(win," interpreting");
- Interpret;
- ELSE
- WriteString(win," incorrect");
- END;
- ELSE
- WriteString(win, "not found");
- END;
- WriteLn(win);
- END;
- CloseScanner;
- EndParser;
- EndGenerator;
- EndInterpreter;
- CloseTextWindow(win);
- END PL0.
-
-
-